//
//  HMWelcomeViewController.swift
//  HMWeibo
//
//  Created by wulei on 15/12/10.
//  Copyright © 2015年 wulei. All rights reserved.
//

import UIKit
import SnapKit
import SDWebImage
class HMWelcomeViewController: UIViewController {

    // 设置界面,视图层次结构
    override func loadView() {
        
        // 直接使用背景图像作为根视图,不用关心图像的缩放问题
        view = backImageView
        
        view .addSubview(iconImageView)
        
        setupUI()
        
    }
    
    // 视图加载完毕后续处理,通常用来设置数据
    override func viewDidLoad() {
        super.viewDidLoad()
iconImageView.sd_setImageWithURL(HMUserAccountViewModel.sharedUserAccountViewModel.avatarURL, placeholderImage: UIImage(named: "avatar_default_big"))

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    // MARK: - 给控件添加动画
    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        
        // 更新设置过的约束: snp_updateConstraints
        // multiplier 是只读属性,创建后不允许修改
        /*
        使用自动布局: 有一个原则
        所有使用"约束"设置位置的控件,不要再设置"Frame"
        
        原因: 1> 自动布局会根据设置的约束,自动计算控件的 "Frame"
            2> 然后在layoutSubviews 函数里设置"Frame"
            3> 如果程序员主动修改控件的"Frame",会引起自动布局的计算错误
        
        自动布局: 工作原理
        1> 当一个运行循环启动时,自动布局系统会收集所有的约束变化
        2> 在运行循环结束前,自动布局会调用"layoutSubviews"函数统一设置"Frame"
        3> "Frame" 在视图里面只要是调整控件位置,最终的还是设置控件的"Frame",
            要在视图中最终要准确的表示控件的位置,最终还是"Frame"
        4> 约束千万不要写在layoutSubviews ,整个视图一创建就要把约束设定好, 因为在
           "layoutSubviews" 里面已经是更新位置了 
        5> 比方说:在运行循环结束前,手指按了一下需要让谁动,在"layoutSubViews"统一设置
        6> 如果需要某些控年提前更新,可以使用"layoutIfNeeded",函数让自动布局系统,提前更新
        
        7> "可动画属性" Fram,bounds,position,alpha,transform
        8> layoutSubviews 强行更新所有收集到的约束变化值
        
        */
        
        iconImageView.snp_updateConstraints { (make) -> Void in
            make.bottom.equalTo(view.snp_bottom).offset(-view.bounds.height+200)
        }
        
        welcomeLable.alpha = 0
        UIView .animateWithDuration(1.2, delay: 0, usingSpringWithDamping: 0.6, initialSpringVelocity: 10, options: [], animations: { () -> Void in
            self.view.layoutIfNeeded()
            }) { (_) -> Void in
              
                self.view.layoutIfNeeded()
                
                UIView.animateWithDuration(0.8, animations: { () -> Void in
                    
                    self.welcomeLable.alpha = 1
                    
                    }, completion: { (_) -> Void in
                        
                        // 发送通知
                        NSNotificationCenter.defaultCenter().postNotificationName(WBSwitchRootViewControllerNotification, object: nil)
                        
                })
                
        }
    }
    
    
    
    // MARK: - 懒加载控件
    
    // 背景图像
    private lazy var backImageView: UIImageView = UIImageView(imageName: "ad_background")
    
    // 用户头像
    private lazy var iconImageView: UIImageView = {
        let iv = UIImageView(imageName:"avatar_default_big")
        
        iv.layer.cornerRadius = 45
        iv.layer.masksToBounds = true
        return iv
    }()
    
    // 欢迎标签
    private lazy var welcomeLable = UILabel(title: "欢迎归来", fontSize: 18)
}

// MARK: - 设置界面
extension HMWelcomeViewController {
    func setupUI() {
       
        view .addSubview(iconImageView)
        view.addSubview(welcomeLable)
        
        iconImageView.snp_makeConstraints { (make) -> Void in
            make.centerX.equalTo(view.snp_centerX)
            make.bottom.equalTo(view.snp_bottom).offset(-200)
            make.size.equalTo(90)
            
        }
        
        
        welcomeLable.snp_makeConstraints { (make) -> Void in
            make.centerX.equalTo(iconImageView.snp_centerX)
            make.top.equalTo(iconImageView.snp_bottom).offset(16)
            
        }
        
        
        
    }
}
